package com.wu.com.wu.spark.core

import org.apache.spark.{SparkConf, SparkContext}

/**
  * spark core 函数的操作用
  *
  * textFile  ---  加载一个文本或者文件 读取外部数据源
  * map       ---  对每一条数据进行相应的处理 如切分
  * reduceByKey--- 传入一个函数，将key相同的一类进行聚合计算 如相加
  * foreach    --  循环输出
  * mapvalues(_+10) ----传入一个函数，类似于map方法，不过这里只是对元组中的value进行计算
  * filter() 传入一个函数， 用户过滤处理数据
  * sortBy() 传入对哪个字段进行排序 对数据进行排序
  * partitionBy() 传入一个自定义的分区类，可进行数据的分区，
  */
object LineCount {

  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("LineCount").setMaster("local")
    countlines(conf)

  }

  def  countlines(conf:SparkConf): Unit ={
    val sc = new SparkContext(conf);
    val lines = sc.textFile("E://ideaWorkSpace2018.4.23//Spark-sql//Sources//people.txt")
    val pairs = lines.map{line =>(line,1)}
    val lineCount = pairs.reduceByKey{_+_}
    lineCount.foreach(lineCount => println(lineCount._1+"-------"+lineCount._2))
  }

}
